import axios from 'axios';
// import qs from 'qs';
// 获取get参数的字符串
function getDataString(params) {
    let newURL = ''
    // let objArr = Object.getOwnPropertyNames(params);
    for (let i in params) {
        // console.log(params[i]);// 得到属性值
        newURL += '/' + params[i];
    }
    return newURL;
}

// TODO:优化请求拦截
// // 在配置里参数里设置Authorization 将 token 赋值给它
// axios.interceptors.request.use(
//     config => {
//         // 设置token start
//         if(accessToken){
//             config.headers.authorization = accessToken;
//         }else{
//             this.$messages.warning('请先登录！');
//         }
        
//         // 设置token end
//         return config;
//     },
//     error => Promise.reject(error)
// );

// 在请求响应的地方回设 token 
// axios.interceptors.response.use(
//     response => {
//         // 回设置token start
//         let accessToken = response.headers['authorization'];
//         console.log(accessToken);
//         if (accessToken && accessToken !== '') {
//             localStorage.setItem('accessToken', accessToken);
//         }
//         // 回设置token end
//         return response.data;
//     },

//     // 请求异常信息提示处理
//     error => {
//         if (error && error.response) {
//             switch (error.response.status) {
//                 case 400:
//                     error.message = `错误请求`;
//                     break;
//                 case 401:
//                     error.message = `未授权，请重新登录`;
//                     break;
//                 case 403:
//                     error.message = `拒绝访问`;
//                     break;
//                 case 404:
//                     error.message = `请求错误,未找到该资源`;
//                     break;
//                 case 405:
//                     error.message = `请求方法未允许`;
//                     break;
//                 case 408:
//                     error.message = `请求超时`;
//                     break;
//                 case 500:
//                     error.message = `服务器端出错`;
//                     break;
//                 case 501:
//                     error.message = `网络未实现`;
//                     break;
//                 case 502:
//                     error.message = `网络错误`;
//                     break;
//                 case 503:
//                     error.message = `服务不可用`;
//                     break;
//                 case 504:
//                     error.message = `网络超时`;
//                     break;
//                 case 505:
//                     error.message = `http版本不支持该请求`;
//                     break;
//                 default:
//                     error.message = `未知错误${error.response.status}`;
//             }
//         } else {
//             error.message = "连接到服务器失败";
//         }
//         return Promise.reject(error);
//     }
// );

export function request(url, method, params) {
    // 创建axios实例，设置基本属性
    let axiosDemo = axios.create({
        // 本地部署nginx加上这一行
        // baseURL: 'http://127.0.0.1',
        // 打包到服务器加上这行
        // baseURL:'http://49.234.121.123',
        baseURL: process.env.NODE_ENV === "production" ? 'http://49.234.121.123': '',
        responseType: `json`,
        headers: {
            "Content-Type": "application/json",
            "token": localStorage.getItem("accessToken")
        }
    });

    if (method === 'get') {
        // 最终想法：把传进来的get参数对象手动进行拼接
        const dataString = getDataString(params);
        return axiosDemo.get(url + dataString).then(res => {
            return Promise.resolve(res);
        }).catch(err => {
            return Promise.reject(err);
        })

    } else if (method === 'post') {
        return axiosDemo({
            url,
            method,
            data: params
        }).then(res => {
            return Promise.resolve(res);
        }).catch(err => {
            return Promise.reject(err);
        });
    }
}